{
  "guild": {
    "id": "1361349522684510449",
    "name": "wafer.space Community",
    "iconUrl": "2026-03_media/fb143eaa45770cbb40493d09b625e98b-09FD1.png"
  },
  "channel": {
    "id": "1484494161003413656",
    "type": "GuildPublicThread",
    "categoryId": "1361349523724570941",
    "category": "general",
    "name": "Ah, this reminds me I wanted to start",
    "topic": null
  },
  "dateRange": {
    "after": "2026-02-28T23:59:59.999+00:00",
    "before": "2026-04-01T00:00:00+00:00"
  },
  "exportedAt": "2026-05-11T09:04:18.864884+00:00",
  "messages": [
    {
      "id": "1484520614269292615",
      "type": "21",
      "timestamp": "2026-03-20T11:54:55.501+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "reference": {
        "messageId": "1484494161003413656",
        "channelId": "1361349523724570941",
        "guildId": "1361349522684510449"
      },
      "inlineEmojis": []
    },
    {
      "id": "1484520618316664833",
      "type": "Default",
      "timestamp": "2026-03-20T11:54:56.466+00:00",
      "timestampEdited": "2026-03-20T12:01:44.143+00:00",
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "The idea is that you just specify a projects.yaml listing the projects you have, as well as having each LibreLane project in its own directory, and then the tool automatically clones the template repo, generates a top-level config, generates the multiplexer verilog source and runs the flow.",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1484520861955522710",
      "type": "Default",
      "timestamp": "2026-03-20T11:55:54.554+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [
        {
          "id": "1484520861632299158",
          "url": "2026-03_media/image-30C93.png",
          "fileName": "image.png",
          "fileSizeBytes": 10434
        }
      ],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1484520996898734123",
      "type": "Default",
      "timestamp": "2026-03-20T11:56:26.727+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "pin mapping is a long list showing how a design\u2019s module outputs map to the pads when selected",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1484521124615159808",
      "type": "Default",
      "timestamp": "2026-03-20T11:56:57.177+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "You can actually map these connections arbitrarily",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1484521251824472195",
      "type": "Default",
      "timestamp": "2026-03-20T11:57:27.506+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Consider this design, where I wish to save on signals by not having enables for every pad",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [
        {
          "id": "1484521251400581221",
          "url": "2026-03_media/image-5F410.png",
          "fileName": "image.png",
          "fileSizeBytes": 7216
        }
      ],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1484521359047655475",
      "type": "Default",
      "timestamp": "2026-03-20T11:57:53.07+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Which I can then map like this",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [
        {
          "id": "1484521358770573483",
          "url": "2026-03_media/image-0D154.png",
          "fileName": "image.png",
          "fileSizeBytes": 5068
        }
      ],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1484521592942886962",
      "type": "Default",
      "timestamp": "2026-03-20T11:58:48.835+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "If the number of outputs of a design is equal to the total number of outputs available, there is a special shorthand syntax where you just type \"out\" for a 1:1 mapping, such that\n```\n1: out[1]\n2: out[2]\n3: out[3]\n```\nis equivalent to just\n```\n1: out\n2: out\n3: out\n```",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1484521747649921066",
      "type": "Default",
      "timestamp": "2026-03-20T11:59:25.72+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "If you have less outputs, you need an explicit mapping, though",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1484521910829318306",
      "type": "Default",
      "timestamp": "2026-03-20T12:00:04.625+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "As for inputs, there is no mapping. Every design receives all available inputs always.",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1484521981117468837",
      "type": "Default",
      "timestamp": "2026-03-20T12:00:21.383+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "This solution has worked for me for many tapeouts",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1484522748779827241",
      "type": "Default",
      "timestamp": "2026-03-20T12:03:24.408+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "(And, of course, the syntax of `in_pu` just means constant input with pull-up)",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1484522838122827939",
      "type": "Default",
      "timestamp": "2026-03-20T12:03:45.709+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "The syntax is pretty simple. Its just a list of attributes separated by underscores",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1484523140595060887",
      "type": "Default",
      "timestamp": "2026-03-20T12:04:57.824+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [
        {
          "id": "1484523140297003068",
          "url": "2026-03_media/projects-FBC0B.yaml",
          "fileName": "projects.yaml",
          "fileSizeBytes": 3141
        }
      ],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1484523352138715187",
      "type": "Default",
      "timestamp": "2026-03-20T12:05:48.26+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "TODO: allow the placement of arbitrary macros with connections between them so you can, for instance, have SRAM macros on your multi-project die",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1484545377691500585",
      "type": "Default",
      "timestamp": "2026-03-20T13:33:19.561+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Is there any python library I can use to help me procedurally generate code, or is there some preferred way to do this?",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-03_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    }
  ],
  "messageCount": 16
}